﻿/**	@file		detach_notify.h
 *	@date		(2012-10-11 23:38:55)/(2012-10-11 23:38:57)
 *-----------------------------------------------------------------------------
 *	\brief			当存在模块释放的时候,会通过回调来通知.
 *	@version	1.0.1.1
 *	@author		Nick Shallery	(nicknide@gmail.com)
 *	@copyright	YOU HAVE ALL LEFT WITH THIS CODE WHILE YOU KEEP COMMENT IN EVERY COPY.
 *-----------------------------------------------------------------------------
**/

#if			!defined(__LOLIX__LOLI__DETACH_NOTIFY__H__NICK__K_IN_G__)
#define		__LOLIX__LOLI__DETACH_NOTIFY__H__NICK__K_IN_G__

#if			!defined(__LOLIX__LOLIX_TYPE__K_IN_G__)
	#include	"../lolix_type.h"
#endif	//	!defined(__LOLIX__LOLIX_TYPE__K_IN_G__)


namespace lolix{namespace loli{
	class LOLIX_NO_VTABLE detach_notify;
	class LOLIX_NO_VTABLE detach_notify_callback;
}}


class LOLIX_NO_VTABLE lolix::loli::detach_notify
	: public lolix::itf
{
public:
	LOLIX_DECLARE_ITF(lolix::loli::detach_notify, lolix::itf, (0x49dd53f0, 0xf4cf3049, 0xaf573ea3, 0x7fdfb141));
	LOLIX_INTERFACE(add_notify, LOLIX_RETNV	, (lolix::loli::detach_notify_callback*));
	LOLIX_INTERFACE(rmv_notify, LOLIX_RETNV	, (lolix::loli::detach_notify_callback*));
};


class LOLIX_NO_VTABLE lolix::loli::detach_notify_callback
	: public lolix::itf
{
public:
	LOLIX_DECLARE_ITF(lolix::loli::detach_notify_callback, lolix::itf, (0xc9f968ef, 0x6ea33447, 0xb417ad8f, 0xd7e6934e));
	LOLIX_INTERFACE(invoke	, LOLIX_RETNV, (LOLIX_ITF_ID const* id));
};


#endif	//	!defined(__LOLIX__LOLI__DETACH_NOTIFY__H__NICK__K_IN_G__)
